/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Pendataan;

import Pinjam.*;
import Koneksi.Koneksi;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Apriani
 */
public class PendataanKontrol {

    private Connection conn;

    public PendataanKontrol(Connection koneksi) {
        this.conn = koneksi;
    }
//fungsi method ini adalah untuk Koneksi Database
    public static PendataanKontrol getKoneksiPendataan() throws SQLException {
        Koneksi konek = new Koneksi();
        PendataanKontrol kon = new PendataanKontrol(konek.getConnection());
        return kon;
    }
//fungsi method ini untuk mencatat judulBuku,penerbit,tahunTerbit pada database inventarisbuku
    public void pendataan(Pendataan dt) throws SQLException {
       PreparedStatement statement = null;
        try {
            conn.setAutoCommit(false);
            String sql = "insert into buku "
                    + "(judulBuku,penerbit,tahunTerbit,noBuku, kuota)"
                    + "values (?,?,?,?,?)";

            statement = conn.prepareStatement(sql);
            statement.setString(1, dt.getJudulBuku());
            statement.setString(2, dt.getPenerbit());
            statement.setString(3, dt.getTahunTerbit());
            statement.setString(4, dt.getNoBuku());
            statement.setString(5, dt.getKuota());


            statement.executeUpdate();
            conn.commit();
        } catch (SQLException exception) {
            conn.rollback();
            throw exception;
        } finally {
            try {
                conn.setAutoCommit(true);
                if (statement != null) {
                    statement.close();
                }
            } catch (SQLException exception) {
                throw exception;
            }


        }
    }
// fungsi method ini adalah untuk melihat semua kategori seperti judul,no buku, penerbit, pengarang, tahun terbit
    public List<Pendataan> lihatseluruhKategori() throws SQLException {
         PreparedStatement statement = null;
        ResultSet result = null;
        try {
            conn.setAutoCommit(false);
            statement = conn.prepareStatement("Select *"
                    + "from buku order by judulBuku");
            result = statement.executeQuery();
            List<Pendataan> pendataan = new ArrayList<Pendataan>();
            while (result.next()) {
                Pendataan pendataans = new Pendataan();

                pendataans.setJudulBuku(result.getString("judulBuku"));
                pendataans.setPenerbit(result.getString("penerbit"));
                pendataans.setNoBuku(result.getString("noBuku"));
                pendataans.setKuota(result.getString("kuota"));

                pendataan.add(pendataans);

            }
            conn.commit();
            return pendataan;
        } catch (SQLException exception) {
            conn.rollback();
            throw exception;
        } finally {
            try {
                conn.setAutoCommit(true);
                if (statement == null) {
                    statement.close();

                }
            } catch (SQLException exception) {
                throw exception;
            }
        }

    }
// fungsi method ini adalah pada saat mahasiswa yang ingin mencari informasi buku mengetikkan judul buku yang ingin dicari tersebut
    public Pendataan cariberdasrkanjudul(String judulBuku) throws SQLException {
        PreparedStatement stat = null;
//        String rusult = "";
        ResultSet result = null;
        try {
            conn.setAutoCommit(false);
//            String sql = "{CALL spCariKode(?,?)}";
//            stat = conn.prepareStatement("select namaBarang, kodeBarang, kategori, qtyMin, beliSetelah, satuan"
//                    + "from Barang"
//                    + "where kodeBarang= ?");
            stat = conn.prepareStatement("Select *"
                    + "From buku "
                    + "where judulBuku = ?");


            stat.setString(1, judulBuku);
            result = stat.executeQuery();
            Pendataan data1 = null;
//            if (result.next()){
//            barang = new Barang();
//            Kategori kat = new Kategori();
//            barang.setKodeBarang(result.getString("kodeBarang"));//kodeBarang
//            barang.setNamaBarang(result.getString("namaBarang"));
//            String kodeKategori = result.getString(1); //2
//            kat.setKodeKategori(result.getString(3));//3
            if (result.next()) {
                data1 = new Pendataan();
                data1.setJudulBuku(result.getString(1));
                data1.setPenerbit(result.getString(2));
//                data.setNIM(result.getString(2));


            }
//           DataBarang.setBelisetelah(result.getString("belisetelah");

            conn.commit();
            return data1;
        } catch (SQLException ex) {
            conn.rollback();
            throw ex;

        } finally {
            try {
                conn.setAutoCommit(true);
            } catch (SQLException exception) {
                throw exception;
            }
        }
    }
     public void kuota(Pendataan data) throws SQLException {

        String kode = data.getJudulBuku();
        String sql = "update buku "
                + "set kuota = kuota +1 where judulBuku = '" + kode + "'";
        Statement stat = conn.createStatement();
        stat.executeUpdate(sql);
        conn.close();
    }
      public void kuotaPinjam(Data data) throws SQLException {

        String kode = data.getJudulBuku();
        String sql = "update buku "
                + "set kuota = kuota -1 where judulBuku = '" + kode + "'";
        Statement stat = conn.createStatement();
        stat.executeUpdate(sql);
        conn.close();
    }
}
